草庐IT

java - 奇怪的并发代码行为

全部标签

ruby - 如何从 Terminal.app 运行一段 ruby​​ 代码?

我专门将OSXTerminal.app用于命令行,但这个问题也可能适用于其他命令行工具。假设我想从命令行运行这段ruby​​代码:Cats.eachdo|cat|cat.name='Mommy'cat.kittenseachdo|kitten|kitten.color="Brown"endend现在,如果我复制/粘贴它,它就会被分解并且不会执行。 最佳答案 ruby-e"Cats.eachdo|cat|cat.name='Mommy'cat.kittenseachdo|kitten|kitten.color='Brown'enden

ruby - 在 ruby​​ 中对数组进行排序的最简单代码?

我通常会做类似的事情array.sort{|a,b|a.somethingb.something}我应该如何干燥它? 最佳答案 使用排序方式array.sort_by{|e|e.something或sort_lambda=lambda{|e|e.something}array.sort_by(&sort_lambda)使用后者,您可以在其他sort_by语句中重用sort_lambda 关于ruby-在ruby​​中对数组进行排序的最简单代码?,我们在StackOverflow上找到一个

ruby - 如果这段代码不是在开玩笑,那它究竟是如何工作的呢?

classTreedefinitialize*d;@d,=d;enddefto_s;@l||@r?",>":@d;enddeftotal;(@d.is_a?(Numeric)?@d:0)+(@l?@l.total:0)+(@r?@r.total:0);enddefinsertdaliasginstance_variable_getp=lambda{|s,o|d.to_s.send(o,@d.to_s)&&(g(s).nil??instance_variable_set(s,Tree.new(d)):g(s).insert(d))}@d?p[:@l,:]:@d=dendend有人愿意尝试

Vim 中的 Ruby 代码自动缩进

我已经将一个Ruby示例复制到Vim中,但事实证明这弄乱了缩进。我试图让Vim应用Ruby特定的缩进。为此,我取消了全局vimrc文件中以下行的注释:ifhas("autocmd")filetypepluginindentonendif然后在Vim中按下gg=G。现在它改变了一些缩进,但它仍然有一些错误:类定义不缩进。评论不会缩进并保留在行首。 最佳答案 在从外部源粘贴之前,使用这个命令:设置粘贴然后进入插入模式粘贴。 关于Vim中的Ruby代码自动缩进,我们在StackOverflow

ruby - 简化的 Ruby 代码部署

这是我想象中的开发和部署过程:创建项目目录my_project。在其中安装所需的Ruby版本。安装所需的gem。写一些代码。使用fpm打包整个东西。将debian软件包运送到生产箱并安装。我使用RVM和Bundler来解决一些痛点,但RVM不关心创建可重定位的Ruby安装,所以你不能将~/.rvm/rubies移动到项目目录中,并且期待一切顺利。您必须重写各种硬编码的#!行,在某些情况下,您必须将.so文件移动到lib目录中。我通过搜索互联网拼凑了一组脚本,这些脚本一起完成了我想要的,但整个事情感觉像是一个巨大的黑客攻击。我不小心发现了https://github.com/ot/bpt

ruby-on-rails - Rails 递归 View 与对象关联的奇怪行为

我有一个与自身关联的评论表以供回复。基本上,具有parent_id的评论也是对其父评论的回复。为了呈现这个,我使用了一个递归View,它在过去非常简单,但不适用于rails3.2.0和ruby​​2.1.1这里是简化的代码:;"/_redesign/entry/comment",:collection=>x,:as=>:comment%>输出是:349223;CommentArray349229;CommentComment在第二次迭代中,comment.replies是一个评论,而不是一个数组,并且所有内容都从那里落下。但是,如果我更改第一行并添加重新加载:全部开始工作,输出为:34

ruby - 为什么带有 splat 参数的 Ruby 过程/ block 的行为与方法和 lambda 不同?

为什么带有splat参数的Ruby(2.0)过程/block的行为与方法和lambda不同?deffoo(ids,*args)pidsendfoo([1,2,3])#=>[1,2,3]bar=lambdado|ids,*args|pidsendbar.call([1,2,3])#=>[1,2,3]baz=procdo|ids,*args|pidsendbaz.call([1,2,3])#=>1defqux(ids,*args)yieldids,*argsendqux([1,2,3]){|ids,*args|pids}#=>1这是对此行为的确认,但没有解释:http://makandra

ruby - ruby、openssl、unicorn、systemd (Gcloud) 的非常奇怪的行为

我们开始在日志中看到一些奇怪的错误,这些错误通常在ruby​​未使用OpenSSL正确编译时出现。但它不一致...我们收到如下错误:RuntimeError:不支持的摘要算法(SHA256)。(还有其他摘要,如sha1)。exampleerrortraceFaraday::SSLError(SSL_CTX_new:(null))exampleerrortrace我们在使用serviceunicornstart或systemctlstartunicorn启动unicorn时成功重现了它。但只有一些请求...不是全部。某些在后台使用OpenSSL的请求确实有效。其他人没有。但是,当我们使用

ruby-on-rails - ruby 中的死代码检测

有谁知道可以检测哪些代码行已被执行或未执行的具有生产值(value)的商业软件包或OSS?我们正在寻找一些工具来帮助我们检测生产环境中的死代码,运行RubyOnRails1.8.7-丹尼尔 最佳答案 在Ruby1.9.2中,您可以简单地测量覆盖率而不会对性能产生重大影响。然而,在1.8.7中,这会大大降低速度。相反,您可以使用perftools.rb了解所用内容的概览。(使用CPUPROFILE_METHODS=1选项)。据我所知,它实际上对应用程序性能没有影响,它可以让您看到调用了哪些方法,尽管您不会获得有关不同代码路径(ifs和

ruby - 不同 Ruby 项目之间代码重用的最佳实践是什么?

伙计们!我是一名具有Java背景的软件开发人员,我正在使用Ruby网络框架(Padrino/Sinatra)开始一些项目。在我的java项目中,我通常有一些“公共(public)”项目,其类在多个项目中使用。例如,我有一个中央身份验证服务和一个存储用户配置文件的共享数据库。我所有使用此服务的项目都共享一些映射到用户配置文件数据库的模型。那么,尽管有框架、orm库等,跨多个Ruby项目共享代码的最佳方式是什么? 最佳答案 除此之外,ruby'sgems是重用代码公共(public)部分的最佳方式之一。Gem具有名称、版本号和描述,因此